When testing, we found different bios has different understanding
about APEI ERST table header, depending on whether it count ACPI
standard header or not.
This patch add support for both bios version, and enable mce_apei.
Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
obj-y += amd_f10.o
obj-y += mctelem.o
obj-y += mce.o
-#obj-y += mce-apei.o
+obj-y += mce-apei.o
obj-y += mce_intel.o
obj-y += mce_amd_quirks.o
obj-y += non-fatal.o
static int __init erst_check_table(struct acpi_table_erst *erst_tab)
{
- if (erst_tab->header_length != sizeof(struct acpi_table_erst))
+ /*
+ * Some old BIOSes include the ACPI standard header in the ERST header
+ * length; new BIOSes do not. Our check allows for both methods.
+ */
+ if ((erst_tab->header_length !=
+ (sizeof(struct acpi_table_erst) - sizeof(erst_tab->header)))
+ && (erst_tab->header_length != sizeof(struct acpi_table_erst)))
return -EINVAL;
if (erst_tab->header.length < sizeof(struct acpi_table_erst))
return -EINVAL;